package com.sync.syncmasterdata.product.service.convert;

import com.sync.syncmasterdata.product.pojo.erp.InventoryForU8;
import com.sync.syncmasterdata.product.pojo.oa.InventoryForOA;

import com.sync.syncmasterdata.product.service.ConvertInterface;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import java.util.Objects;

/**
 * oa产品对象 转 U8对象
 */
@Service
public class ProductOAToU8 implements ConvertInterface<InventoryForOA, InventoryForU8> {

    public InventoryForU8 convertTo(InventoryForOA oa) {
        InventoryForU8 u8 = new InventoryForU8();
        /**
         * 通用名称
         */
        u8.setCurrencyName(oa.getTongyongmc());
        /**
         * 存活编码 (根据产品类别 自动生成编码)
         */
        u8.setCode(oa.getCunhuobm());
        /**
         * 产品名称
         */
        u8.setName(oa.getChanpinmc());
        /**
         * 产品货号
         */
        u8.setInvaddCode(oa.getHuohao());
        /**
         * 主要供应商
         */
        u8.setMain_supplier(oa.getShengchanqy());
        /**
         * 产品规格
         */
        u8.setSpecs(oa.getGuigexh());
        /**
         * 产品类别 ( FW,JC,SJ.....)
         */
        u8.setSort_code(oa.getChanpinlx());
        /**
         * 主单位
         */
        u8.setMain_measure(oa.getZhujildw());
        /**
         * 生产企业文本
         */
        u8.setEnterprise(oa.getShengchanqywb());
        /**
         * 品牌
         */
        u8.setSelf_define5(oa.getPinpaiwb());
        /**
         * 是否医疗器械
         */
        u8.setSelf_define2(shifouylqx(oa.getShifouylqx()));
        /**
         * 业务类型
         */
        u8.setCidefine2(oa.getChanpinx());
        /**
         * 产品线
         */
        u8.setCidefine3(oa.getChanpinx());
        /**
         * 产品组
         */
        u8.setCidefine4(oa.getChanpinz());
        /**
         * 项目名称
         */
        u8.setCidefine5(oa.getXiangmumcwb());
        /**
         * 是否国产
         */
        //勾选区
        u8.setBImport(oa.getGuochanjk());
        //勾选区调整
        //FW开头的,不需要生产耗材,需要 应税劳务
        if (oa.getChanpinlx().contains("FW02") || oa.getChanpinlx().contains("FW03") || oa.getChanpinlx().contains("FW04") || oa.getChanpinlx().contains("FW05") || oa.getChanpinlx().contains("FW06") || oa.getChanpinlx().contains("FW07") || oa.getChanpinlx().contains("FW08")) {
            u8.setTax_serv_flag(1);
            u8.setProd_consu_flag(0);
        }

        if (oa.getChanpinlx().contains("JC")) {
            u8.setDefwarehouse("05");
            u8.setDefwarehousename("检测项目库");
        } else {
            u8.setDefwarehouse("01");
            u8.setDefwarehousename("总库");
        }

        /**
         * 仓库的特殊处理 自由项的处理(仓库勾选) 仓库+FW的分类,不需要自由项 增加类型为JC的判断
         */
        if ("检测项目库".equals(oa.getKuwei()) || "医疗器械库".equals(oa.getKuwei()) || "项目仓库".equals(oa.getKuwei()) || "外库".equals(oa.getKuwei()) || (oa.getChanpinlx().contains("FW")) || (oa.getChanpinlx().contains("JC"))) {
            u8.setSelf_define4("");
            u8.setBconsiderfreestock(0);
            u8.setBcontrolfreerange1(0);
            u8.setFree_item1(0);
        } else {
            u8.setSelf_define4(oa.getKuwei());
            u8.setBconsiderfreestock(1);
            u8.setBcontrolfreerange1(1);
            u8.setFree_item1(1);
        }
        return u8;
    }

    /**
     * 更新erp 产品记录用
     *
     * @param oa
     * @return
     */
    public InventoryForU8 convertToForUpdate(InventoryForOA oa) {
        InventoryForU8 u8 = new InventoryForU8();
        /**
         * 通用名称
         */
        u8.setCurrencyName(oa.getTongyongmc());
        /**
         * 存货编码 （更新必填）
         */
        u8.setCode(oa.getCunhuobm());
        /**
         * 产品名称
         */
        u8.setName(oa.getChanpinmc());
        /**
         * 产品货号
         */
        u8.setInvaddCode(oa.getHuohao());
        /**
         * 主要供应商(U8要编码)
         */
        u8.setMain_supplier(oa.getShengchanqy());
        /**
         * 主计量单位
         */
        u8.setMain_measure(oa.getZhujildw());
        //如果主计量单位为空 大概率为修改
        if (StringUtils.isBlank(oa.getZhujildw())) {
            u8.setUnitgroup_code(null);
            u8.setUnitgroup_name(null);
        }


        /**
         * 产品规格
         */
        u8.setSpecs(oa.getGuigexh());

        /**
         * 生产企业文本
         */
        u8.setEnterprise(oa.getShengchanqywb());
        /**
         * 品牌
         */
        u8.setSelf_define5(oa.getPinpaiwb());
        /**
         * 是否医疗器械
         */
        u8.setSelf_define2(shifouylqx(oa.getShifouylqx()));

        /**
         * 业务类型
         */
        u8.setCidefine2(oa.getChanpinx());
        /**
         * 产品线
         */
        u8.setCidefine3(oa.getChanpinx());
        /**
         * 产品组
         */
        u8.setCidefine4(oa.getChanpinz());
        /**
         * 项目名称
         */
        u8.setCidefine5(oa.getXiangmumcwb());

        /**
         * 仓库的特殊处理 自由项的处理(仓库勾选)
         */
        if ("检测项目库".equals(oa.getKuwei()) || "医疗器械库".equals(oa.getKuwei()) || "项目仓库".equals(oa.getKuwei()) || "外库".equals(oa.getKuwei())) {
            u8.setSelf_define4("");
            u8.setBconsiderfreestock(0);
            u8.setBcontrolfreerange1(0);
            u8.setFree_item1(0);
        } else {
            u8.setSelf_define4(oa.getKuwei());
            u8.setBconsiderfreestock(1);
            u8.setBcontrolfreerange1(1);
            u8.setFree_item1(1);
        }

        /**
         * 增加更新时的货位确定
         */
        if (oa.getCunhuobm().contains("JC")) {
            u8.setDefwarehouse("05");
            u8.setDefwarehousename("检测项目库");
        } else {
            u8.setDefwarehouse("01");
            u8.setDefwarehousename("总库");
        }

        /**
         * 是否国产
         */
        //勾选区
        u8.setBImport(oa.getGuochanjk());
        return u8;
    }

    /**
     * 是否医疗器械转换
     *
     * @return
     */
    private String shifouylqx(Integer x) {
        try {
            if (Objects.isNull(x)) {
                return "否";
            }
            if (Integer.valueOf(x) == 0) {
                return "否";
            } else {
                return "是";
            }
        } catch (Exception exception) {
            exception.printStackTrace();
            return "否";
        }
    }

    /**
     * 根据类别获取 u8 该类别中最后一个可用编码
     */
    private String getLastCode(String lb) {
        return null;
    }


}
